# coding: utf8
"""
迭代、生成器
"""
import random

"""迭代器（列表推导[解析]式）"""
list1 = [random.random() for i in range(10)]
dict1 = {f"{i} x {i} ": i ** 2 for i in range(10)}
set1 = {i ** 2 for i in range(10)}
# 可以多次遍历，或者copy新变量dict2 = copy.deepcopy(dict1)
print(list1, dict1, set1)

"""生成器（无法切片）"""
generator1 = (i ** 2 for i in range(10))  # 输出<generator>并非tuple
print(generator1)


def generator2():  # 使用函数创建生成器，下一节讲解【函数】
    for i in range(10):
        yield i ** 2


# 遍历完一次后，就无法再使用，即使copy也不行（进阶内容讲解）
print(generator2())
